//jwt全称:json web token.可以对接口进行安全方面的限制.

// jwt的流程:
// 1.用户输入账号与密码提交表单(前端) 
// 2.服务端接收到账号与密码对其进行验证.(服务端)
// 3.服务端验证成功,会生成token,以响应体或响应头的形式返回给前端..(服务端)
// 4.前端接收到token后,对token进行保存.一般以storage或cookie的形式保存.(前端)
// 5.前端再次发送请求时,以请求头(常见:token,authorization)的形式携带token,传递给后台接口.(前端)
// 6.服务端接收到请求头的token对其进行验证,如果验证token失败(1-token错误 2-token过期)则认为无权限访问该接口(服务端)
// 7.退出登录token失效

//引入jwt
const jwt = require("jwt-simple");

const jwtEncode = (adminName, secret) => {//封装
  return jwt.encode({
    adminName,//传递的用户名
    exp: Date.now() / 1000 + 60 * 60 //过期时间1小时
  }, secret);
}

const jwtDecode = (token, secret) => {//解码
  
  try {
    const {
      adminName
    } = jwt.decode(token, secret);
    //如果解码成功,则返回一个对象 对象的code状态是1,并还有一个用户名
    return {
      code: 1,
      adminName
    }
  } catch (e) {
    console.log('解码失败',e.message);
    //如果解码失败,则返回一个对象,状态是0
    return {
      code: 0
    }
  }
}

module.exports = {
  jwtEncode,
  jwtDecode
}//es6暴露